<?php

namespace app\rest\controller;

use think\Controller;
use think\Db;
use think\Request;
use app\rest\model\User as UserModel;

class User extends Controller
{
    /**
     * 显示资源列表
     *
     * @return \think\Response
     */
    public function index()
    {
//        return '列表页面';
        $list = Db::table('hc_user')->field(['id', 'name'])->order('id', 'asc')->select();

//        var_dump($list);
        return view('user/index', [
            'title' => '用户列表',
            'list' => $list
        ]);
    }

    /**
     * 显示创建资源表单页.
     *
     * @return \think\Response
     */
    public function create()
    {
//        return '新增表单页面';
        return view('user/create', [
            'title' => '新增用户拉~'
        ]);
    }

    /**
     * 保存新建的资源
     *
     * @param  \think\Request $request
     * @return \think\Response
     */
    public function save(Request $request)
    {
        // DB
////        var_dump($request->post); // NO
//
////        $p = $request->post();
////        $p = Request::instance()->post();
//        $p = input('post.');
////        dump($p);
//
//        // 处理数据
//        $data = [
//            'name' => $p['name'],
//            'pass' => md5($p['pass']),
//            'sex' => $p['sex'],
//            'age' => $p['age'],
//            'province' => $p['province'],
//            'tel' => $p['tel']
//        ];
//
////        dump($data);
//
//        // 执行数据库插入
//        $result =  Db::name('user')->data($data)->insert();
//
//        if ($result > 0) {
//            return $this->success('添加成功', url('rest/user/index'));
//        } else {
//            return $this->error('添加失败');
//        }

        // ORM
        // 实力化 model,并传入POST数据
        $user = new UserModel($request->post());

        // 处理密码
//        $user->pass = md5(input('post.pass'));

        $user->pass = $user->setPass(input('post.pass'));

//        var_dump(hash_algos());
        // 断点调试
//        halt($user->pass);

        //  验证器 验证数据
        $check = $this->validate($request->post(), 'rest/User');

        if ($check !== true) {
            $this->error($check);
            return;
        }


        // 添加数据,并过滤非数据表字段
        // 返回 写入的记录数
        $result = $user->allowField(true)->save();
//        var_dump($user);

        // 获取自订ID
        echo $user->id;

        // 判断指定情况
        if ($result > 0) {
            return $this->success('添加成功', url('rest/user/index'));
        } else {
            return $this->error('添加失败,请重试!');
        }
    }

    /**
     * 显示指定的资源 (AJAX 弹框)
     *
     * @param  int $id
     * @return \think\Response
     */
    public function read($id)
    {
        // 是否为 Ajax 请求
        if (!Request::instance()->isAjax()) {
            $this->error('你四不四迷路了!', '/');
            return;
        }


//        return '读取' . $id . '号用户';
        // 显式查询
        $row = Db::name('user')->field(['pass', 'status'], true)->find($id);
//        var_dump($row);

        if ($row === null) {
            $info['status'] = false;
            $info['title'] = '查无此人';
            $info['datas'] = '查无数据,请稍候重试..';
        } else {
            $info['status'] = true;
            $info['title'] = $row['name'];
            $info['datas'] = $row;
        }
        return json($info);
    }


    /**
     * 显示指定的资源 (新页面显示)
     *
     * @param  int $id
     * @return \think\Response
     */
    public function readpage($id)
    {
        // 显式查询
        $row = Db::name('user')->field(['pass', 'status'], true)->find($id);
//        var_dump($row);
        return view('user/show', [
            'title' => $row['name'] . '的详情',
            'row' => $row
        ]);
    }

    /**
     * 显示编辑资源表单页.
     *
     * @param  int $id
     * @return \think\Response
     */
    public function edit($id)
    {
//        return '编辑' . $id . '号用户';
        // 显式查询
        $row = Db::name('user')->field(['pass', 'status'], true)->find($id);
//        var_dump($row);
        return view('user/edit', [
            'title' => '编辑用户',
            'data' => $row
        ]);

    }

    /**
     * 保存更新的资源
     *
     * @param  \think\Request $request
     * @param  int $id
     * @return \think\Response
     */
    public function update(Request $request, $id)
    {
        // DB
////        var_dump($request);
//        $p = input('put.');
////        dump($p);
//
//        // 处理数据
//        $data = [
//            'name' => $p['name'],
//            'sex' => $p['sex'],
//            'age' => $p['age'],
//            'province' => $p['province'],
//            'tel' => $p['tel']
//        ];
//
////        dump($data);
//
//        // 执行数据库更新
//        $result =  Db::name('user')->where('id', $id)->update($data);
//
//        if ($result) {
//            return $this->success('更新成功', url('rest/user/index'));
//        } else {
//            return $this->error('更新失败');
//        }

        // ORM

        $info = $request->put();

        //  验证器 验证数据
        $check = $this->validate($info, 'rest/User');

        if ($check !== true) {
            $this->error($check);
            return;
        }


        $user = UserModel::get($id);

//        halt($user);
        $user->allowField(true)->save($info);


        $this->success('更新成功', url('rest/user/index'));

    }

    /**
     * 删除指定资源
     *
     * @param  int $id
     * @return \think\Response
     */
    public function delete($id)
    {
        $result = Db::name('user')->delete($id);
        if ($result > 0) {
            $info['status'] = true;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . ' 的用户删除成功!';
        } else {
            $info['status'] = false;
            $info['id'] = $id;
            $info['info'] = 'ID为: ' . $id . ' 的用户删除失败,请重试!';
        }
        return json($info);
    }

    public function login()
    {
        return view('login', [
            'title' => '登录界面'
        ]);
    }

    public function logindo()
    {
        $name = input('post.name');
        $pass = input('post.pass');

        // 根据用户名 获取数据
        $user = UserModel::get(['name'=>$name]);

        // 判断 该用户 是否存在
        if ($user) {
            // 获取用户ID
            $id = $user->id;

            // 判断 该用户的密码输入情况
            if ($user->checkPass($id, $pass)) {
                return '登录成功';
            } else {
                return '登录失败,密码错误';
            }

        } else {
            return '用户不存在!';
        }



    }



}
